package com.tim.third.demo.map_struct;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 类型转换
 * mapstruct
 * https://blog.csdn.net/qq_38322527/article/details/123647995
 * 类型无法自动转换时，报错
 */
@Mapper // 和 Mybatis的很像哦
public interface MapStructInf {
        /**
         * 获取该类自动生成的实现类的实例
         * 接口中的属性都是 public static final 的 方法都是public abstract的
         */
        MapStructInf instances = Mappers.getMapper(MapStructInf.class);


        /**
         * 这个方法就是用于实现对象属性复制的方法
         *
         * @Mapping 用来定义属性复制规则 source 指定源对象属性 target指定目标对象属性
         *
         * @param userDto 这个参数就是 源对象，也就是需要 被复制 的对象
         * @return 返回的是 目标对象，就是最终的结果对象
         */
        @Mappings({
//                @Mapping(source = "id",target = "id"),
//                @Mapping(source = "name",target = "name"),
//                @Mapping(source = "age",target = "age"),
//                @Mapping(source = "email",target = "email")
        })
        User tranceToUser(UserDto userDto);


}
